package com.ewiqi.springsecuritydemo.service;

import com.ewiqi.springsecuritydemo.model.Permission;
import com.ewiqi.springsecuritydemo.model.Role;
import com.ewiqi.springsecuritydemo.model.User;

import java.util.List;

/**
 * @author fengyu.zhang
 * @date 2021/1/19 11:57 上午
 */
public interface SecurityService {
    /**
     * 新增用户
     *
     * @param user 用户
     * @return ID
     */
    int createUser(User user);

    /**
     * 更新用户
     *
     * @param user 用户
     */
    void updateUser(User user);

    /**
     * 按ID查找用户
     *
     * @param id ID
     * @return 用户
     */
    User loadUser(int id);

    /**
     * 获取用户列表
     *
     * @return 用户列表
     */
    List<User> loadUser();

    /**
     * 删除用户
     *
     * @param id ID
     */
    void deleteUser(int id);

    /**
     * 通过用户名查找用户
     *
     * @param username 用户名
     * @return 用户
     */
    User findByUsername(String username);

    /**
     * 新增权限
     *
     * @param permission 权限
     * @return ID
     */
    int createPermission(Permission permission);

    /**
     * 更新权限
     *
     * @param permission 权限
     */
    void updatePermission(Permission permission);

    /**
     * 按ID查找权限
     *
     * @param id ID
     * @return 权限
     */
    Permission loadPermission(int id);

    /**
     * 获取所有权限
     *
     * @return 权限列表
     */
    List<Permission> loadPermission();

    /**
     * 删除权限
     *
     * @param id ID
     */
    void deletePermission(int id);

    /**
     * 创建角色
     *
     * @param role 角色
     * @return ID
     */
    int createRole(Role role);

    /**
     * 按ID查找角色
     *
     * @param id ID
     * @return 角色
     */
    Role loadRole(int id);

    /**
     * 获取角色列表
     *
     * @return 角色列表
     */
    List<Role> loadRole();

    /**
     * 更新角色
     *
     * @param role 角色
     */
    void updateRole(Role role);

    /**
     * 删除角色
     *
     * @param id ID
     */
    void deleteRole(int id);
}
